home *** CD-ROM | disk | FTP | other *** search
- {$N+}
-
- Program CalcPI(input, output);
-
- { Not the most efficient Program I've ever written. Mostly it's quick and
- dirty. The infinite series is very effective converging very quickly.
- It's much better than Pi/4 = 1 - 1/3 + 1/5 - 1/7 ... which converges
- like molasses. }
-
- { Pi / 4 = 4 * (1/5 - 1/(3*5^3) + 1/(5*5^5) - 1/(7*5^7) + ...) -
- (1/239 - 1/(3*239^3) + 1/(5*239^5) - 1/(7*239^7) + ...) }
-
- {* Infinite series courtesy of Machin (1680 - 1752). I found it in my
- copy of Mathematics and the Imagination by Edward Kasner and
- James R. Newman (Simon and Schuster, New York 1940, p. 77) * }
-
- Uses
- Crt;
-
-
- Var
- Pi_Fourths,
- Pi : Double;
- Temp : Double;
- ct : Integer;
- num : Integer;
-
-
- Function Power(Number, Exponent : Integer) : double;
- Var
- ct : Integer;
- temp : double;
-
- begin
- temp := 1.00;
- For ct := 1 to Exponent DO
- temp := temp * number;
- Power := temp
- end;
-
- begin
- ClrScr;
- ct := 1;
- num := 1;
- Pi_Fourths := 0;
-
- While ct < 15 DO
- begin
- Temp := (1.0 / (Power(5, num) * num)) * 4;
-
- if ct MOD 2 = 1 then
- Pi_Fourths := Pi_Fourths + Temp
- ELSE
- Pi_Fourths := Pi_Fourths - Temp;
-
- Temp := 1.0 / (Power(239, num) * num);
-
- if ct MOD 2 = 1 then
- Pi_Fourths := Pi_Fourths - Temp
- ELSE
- Pi_Fourths := Pi_Fourths + Temp;
-
- ct := ct + 1;
- num := num + 2;
- end;
-
- Pi := Pi_Fourths * 4.0;
- Writeln( 'PI = ', Pi);
- end.